package br.ceut.especializacao.poo.livros;

import java.util.List;

import br.ceut.especializacao.poo.util.RepositorioException;

public class CadastroLivros {
	
	private RepositorioLivros livros;

	public CadastroLivros(RepositorioLivros repositorio) {
		this.livros = repositorio;
	}

	public void cadastrar(Livro livro) throws RepositorioException, LivroJaCadastradoException {
		if (livro != null) {
			if (!livros.existe(livro.getIsbn())) {
				livros.inserir(livro);
			} else {
				throw new LivroJaCadastradoException(livro.getIsbn());
			}
		} else {
			throw new IllegalArgumentException();
		}
	}
	
	public List<Livro> getLivros(){
		try {
			return livros.getLivros();
		} catch (RepositorioException e) {
			e.printStackTrace();
		}
		return null;
	}
	

	public void atualizar(Livro livro) throws RepositorioException, LivroJaCadastradoException {
		if (livro != null) {
			if (livros.existe(livro.getIsbn())) {
				try {
					livros.atualizar(livro);
				} catch (LivroNaoEncontradoException e) {
					e.printStackTrace();
				}
			} 
		} else {
			throw new IllegalArgumentException();
		}		
	}

	public void remover(String isbn) throws LivroNaoEncontradoException,
			RepositorioException {
		livros.remover(isbn);
	}
	
	public Livro buscarLivro(String isbn) throws LivroNaoEncontradoException,
	RepositorioException {
		return livros.procurar(isbn);
	}

	public boolean existe(String isbn) throws RepositorioException {
		return livros.existe(isbn);
	}

}
